package com.lixiaoyu.service.impl;

import com.lixiaoyu.dao.UserDB;
import com.lixiaoyu.entity.ExpressUser;
import com.lixiaoyu.service.UserService;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

/**
 * 用户  业务层
 */
public class UserServiceImpl implements UserService {

    UserDB userDB = new UserDB();

    /**
     *
     * @param expressUser
     * @return 0--登录成功| 1--登录失败
     */
    @Override
    public Map loginExpress(ExpressUser expressUser) {

        Map<Integer,String> retrnLogin = userDB.loginExpress(expressUser);

        return retrnLogin;
    }

    @Override
    public String registerUser(ExpressUser expressUser) {

        //账号
        int userName = getUserName(expressUser);
        expressUser.setUserName(userName);
        String returnRegister = userDB.registerUser(expressUser);

        return returnRegister;
    }


    /**
     * 生成的账号规则：
     * · 生成的位数全部都是10位
     * · 1，2，3位手机号的前三位
     * · 4 位性别 1是男，0是女
     * · 5，6 位当前时间 年后两位例如：1996 就是96
     * · 7，8位当前月 例如：02
     * · 9，10位 当年时间 time 精确到秒的 数字之和
     * 例如：13：20：50 就是11。
     * · 生成结果：1761960411
     * @param expressUser
     * @return
     */
    private int getUserName(ExpressUser expressUser) {
        //手机号前三位
        String phone = expressUser.getPhoneNumber().substring(0,3);
        //4 位性别 1是男，0是女
        //现在的身份证大部分都是18位
        String idno = expressUser.getIdno().substring(15, 16);
        //5，6 位当前时间 年后两位
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMhhmmss");
        String time = simpleDateFormat.format(date);
        String userTime = time.substring(2, 4);
        //7，8位当前月 例如：02
        String userDate = time.substring(4, 6);
        //9，10位 当年时间 time 精确到秒的 数字之和
        char[] sumTime = time.substring(6, 12).toCharArray();
        int sumDate = 0;
        for (char a:
             sumTime) {
            Integer.parseInt(String.valueOf(a));
            sumDate += Integer.parseInt(String.valueOf(a));
        }
        System.out.println("==="+phone+idno+userTime+userDate+sumDate);
        int userName = Integer.parseInt(phone+idno+userTime+userDate+sumDate);

        return userName;
    }
}
